home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 9 / Night Owl CD-ROM (NOPV9) (Night Owl Publisher) (1993).ISO / 009a / snpd0493.zip / MV.C < prev    next >
C/C++ Source or Header  |  1993-04-05  |  2KB  |  71 lines

  1. /*
  2. ** mv.c -- move or rename files or directories  
  3. ** updated for multiple files, 5 jul 92, rlm    
  4. ** placed in the public domain via C_ECHO by the author, Ray McVay
  5. **
  6. ** modified by Bob Stout, 28 Mar 93
  7. */
  8.  
  9. #include <stdio.h>
  10. #include <string.h>
  11. #include <dos.h>
  12.  
  13. /* For portability, make everything look like MSC 6 */
  14.  
  15. #if defined(__TURBOC__)
  16.  #include <dir.h>
  17.  #define _dos_findfirst(f,a,b) findfirst(f,b,a)
  18.  #define find_t ffblk
  19.  #define _A_SUBDIR FA_DIREC
  20.  #define attrib ff_attrib
  21. #else                   /* assume MSC/QC                                */
  22.  #include <direct.h>
  23. #endif
  24.  
  25. char target[FILENAME_MAX];
  26. char *generr = "ERROR: mv - couldn't rename %s %s\n";
  27.  
  28. void help(char *s)
  29. {
  30.       puts("usage: mv <oldname [...]> <newname|newdir>");
  31.       printf("error: %s\n", s);
  32. }
  33.  
  34. isdir(char *path)
  35. {
  36.       struct  find_t f;
  37.  
  38.       return (_dos_findfirst(path, _A_SUBDIR, &f) == 0 &&
  39.             (f.attrib & _A_SUBDIR));
  40. }
  41.  
  42. main(int argc, char **argv)
  43. {
  44.       int src;
  45.  
  46.       puts("mv 1.2 (28 mar 93) - Ray L. McVay/Bob Stout");
  47.       if (argc < 3)
  48.             help("Not enough parameters");
  49.       else if (isdir(argv[argc -1]))
  50.       {
  51.             for (src = 1; src < argc - 1; src++)
  52.             {
  53.                   strcpy(target, argv[argc - 1]);
  54.                   strcat(target, "\\");
  55.                   if (strrchr(argv[src], '\\'))
  56.                         strcat(target, strrchr(argv[src], '\\') + 1);
  57.                   else if (argv[src][1] == ':')
  58.                         strcat(target, argv[src] + 2);
  59.                   else  strcat(target, argv[src]);
  60.                   if (rename(argv[src], target))
  61.                         printf(generr, argv[src], target);
  62.             }
  63.       }
  64.       else if (argc == 3)
  65.       {
  66.             if (rename(argv[1], argv[2]))
  67.                   printf(generr, argv[1], argv[2]);
  68.       }
  69.       return 0;
  70. }
  71.